package model

import (
	log "github.com/sirupsen/logrus"
	"gorm.io/gorm"
	"myginblog/utils/errmsg"
)

type Category struct {
	gorm.Model
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// CheckCategory 查询分类是否存在
func CheckCategory(name string) int {
	var category Category
	err = db.Where("name = ?", name).First(&category).Error
	if category.ID > 0 {
		//	1001
		return errmsg.ErrorCateNameUsed
	}
	return errmsg.SUCCESS
}

// CreatCategory 新增分类
func CreatCategory(data *Category) int {
	err = db.Create(&data).Error
	if err != nil {
		log.Error(err)
		//	500
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

//	todo 查询分类下所有文章

// GetCategory 查询分类列表
func GetCategory(pageSize int, pageNum int) []Category {
	var category []Category
	err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&category).Error
	if err != nil && err != gorm.ErrRecordNotFound {
		log.Error(err)
		return nil
	}
	return category
}

// EditCategory 编辑分类信息
func EditCategory(id int, data *Category) int {
	var category Category
	var cateMap = make(map[string]interface{})
	cateMap["name"] = data.Name
	err = db.Model(&category).Where("id = ? ", id).Updates(cateMap).Error
	if err != nil {
		log.Error(err)
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

// DeleteCategory 删除分类信息
func DeleteCategory(id int) int {
	var category Category
	err = db.Where("id = ? ", id).Delete(&category).Error
	if err != nil {
		log.Error(err)
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}
